/*
 * 类型推断
 * Rust的类型推断引擎，它不只是在初始化时看看右值(r-value)的类型而已，它还会考察变量
 * 之后会怎样使用，借此推断类型。
 */
fn main() {
    // 因为有类型说明，编译器知道 `elem` 的类型就是u8
    let elem = 5u8;

    // 创建一个空向量(vector，即不定长的，可以增长的数组)
    let mut vec = Vec::new();
    // 现在编译器还不知道`vec` 的具体类型，只知道它是某种构成的向量(`Vec<_>`)

    // 在向量中插入 `elem`
    // 如果注释掉这行，编译报错
    vec.push(elem);
    // 现在编译器知道 `vec` 是u8 的向量了 (`Vec<u8>`)

    println!("{:?}", vec);
}